/********************************************************/
/*                                                      */
/*       Variables globales du pluggin websafe          */
/*------------------------------------------------------*/
/*       Par MaX3315                                    */
/*       http://codessources.votre-web.com              */
/********************************************************/
var CP_PLUGGIN_PANTONE_REFRESH_THREAD_DECAY=2;	//temps avant lancement du test isWebSafe.  (ms)
												//mettre 0 pour une recherche en temps réelle, mais ralentira le script
												//dans son intégralité!
var CP_PLUGGIN_PANTONE_BG_SELECTOR_PALETTE='#D4D0C8';


/********************************************************/
/*                                                      */
/*        Méthodes globales du pluggin pantone          */
/*------------------------------------------------------*/
/*                                                      */
/********************************************************/

//gestionnaire du click pour charger une nuance pantone convertie en hex
function CP_PLUGGIN_PANTONE_CLICK_HANDLER(aEvent)
{
	var myEvent = aEvent ? aEvent : window.event; //recuperation de l'evenement
	//on recupere objet cible declencheur de l'evenement
	var target= myEvent.target ? myEvent.target : myEvent.srcElement;
	
	//recuperation de l'id du color picker
	var tmp=target.id.split('_');
	var cpid='';
	for(var i=0 ; i<tmp.length-3 ; i++) { if(i>0) {cpid+='_'; } cpid+=tmp[i]; }
	
	var colorPicker=CP_findColorPickerById(cpid);
	if(colorPicker)
	{
		//recuperation de la couleur
		var hexToReload=tmp[tmp.length-1];
		colorPicker.set('hex',hexToReload);
		colorPicker.change(document.getElementById(colorPicker.id+'_hex'));
	}
}


//indique si une couleur Hex passé en paramètre correspond à une couleur pantone
//retourne array(true|false , nuance pantone la plus proche en Hex)
/*
  ATTENTION:
  cela n'a pas vraiment de sens de dire qu'une couleur décrite en RGB 'corresponde' a une nuance Pantone.
  En effet, una nuance pantone décrit une couleur imprimmé. Et donc sa correspondance RGB dépend des profils
  de conversion utilisé.
  Ce script utilise une table de conversion vous permettant d'avoir un semblant d'aperçus, en aucun cas il ne
  peut s'agir d'une véritable conversion.
*/
function CP_PLUGGIN_PANTONE_isPantoneColor(hexCode)
{
    var i;
	var plusProche='';
	var distancePlusProche=null;
	var plusProcheHex='';
	var p1=RGB2Array(HEX2RGB(hexCode));
	for(i=0; i<Pantone2HEX.length ; i++)
	{
	   if(Pantone2HEX[i][1]==hexCode)
	   {
		 return Array(true,Pantone2HEX[i][1],Pantone2HEX[i][0]);
	   }
	   else
	   {
		  var p2=RGB2Array(HEX2RGB(Pantone2HEX[i][1]));
		  var tmp=(p1[0]-p2[0])*(p1[0]-p2[0])+(p1[1]-p2[1])*(p1[1]-p2[1])+(p1[2]-p2[2])*(p1[2]-p2[2]); // nb je n'aplqiue pas la racine carre afin d'optimise le temps de calcule.
		  if(distancePlusProche==null || distancePlusProche>tmp) { distancePlusProche=tmp; plusProche=Pantone2HEX[i][0]; plusProcheHex=Pantone2HEX[i][1]; }
	   }
	}
	return Array(false,plusProcheHex,plusProche);
}

//génère le nuancier pantone en html
function CP_PLUGGIN_PANTONE_generatePantonePalette(colorPickerId)
{
	var pourFinirLaLigne=2;
	var str='<table style="width:100%;" cellspacing="4" cellpadding="0"><tr>';
	var i=0;
	while(i<Pantone2HEX.length)
	{
		if(pourFinirLaLigne==2) { str+='<tr>'; }
		str+='<td width="33%" style=" margin:4px; font-size:9px;" align="center">'+Pantone2HEX[i][0]+'<div style="border:solid 1px #666666; background-color:'+Pantone2HEX[i][1]+'; margin-left:5px; margin-right:5px; height:60px; cursor:pointer;" id="'+colorPickerId+'_pantonePalette_selector_'+Pantone2HEX[i][1]+'" onClick="CP_PLUGGIN_PANTONE_CLICK_HANDLER(event);"></div></td>';
		if(pourFinirLaLigne==0)	{	str+='</tr>'; pourFinirLaLigne=2; }  //fermeture d'une ligne
		else { pourFinirLaLigne--; }
		i++;
	}
	for(var i=0 ; i<pourFinirLaLigne+1 ; i++) { str+='<td>&nbsp;</td>';	} //on complete la dernière ligne si besoin
	if(pourFinirLaLigne!=0) { str+='</tr>'; } //on ferme la dernière ligne complete
	str+='</table>';
	return str;
}